package com.rbac.service;

import com.rbac.dto.UserQueryDTO;
import com.rbac.entity.SysUser;
import com.rbac.entity.SysPermission;
import com.github.pagehelper.PageInfo;
import com.rbac.vo.UserVO;

import java.util.List;
import java.util.Map;

public interface UserService {
    
    /**
     * 根据用户名查询用户
     */
    SysUser getUserByUsername(String username);
    
    /**
     * 根据ID查询用户
     */
    SysUser getUserById(Long id);
    
    /**
     * 获取用户列表
     */
    PageInfo<UserVO> getUserList(UserQueryDTO queryDTO);
    
    /**
     * 新增用户
     */
    boolean addUser(SysUser user);
    
    /**
     * 更新用户
     */
    boolean updateUser(SysUser user);
    
    /**
     * 删除用户
     */
    boolean deleteUser(Long id);
    
    /**
     * 更新用户状态
     */
    boolean updateUserStatus(Long id, Integer status);
    
    /**
     * 根据用户ID获取角色ID列表
     */
    List<Long> getRoleIdsByUserId(Long userId);
    
    /**
     * 根据用户ID获取角色名称列表
     */
    List<String> getRoleNamesByUserId(Long userId);
    
    /**
     * 分配角色
     */
    boolean assignRoles(Long userId, List<Long> roleIds);
    
    /**
     * 获取当前用户权限列表
     */
    List<String> getUserPermissions();
    
    /**
     * 获取当前用户菜单
     */
    List<SysPermission> getUserMenus();
    
    /**
     * 获取当前用户信息（包含权限）
     */
    Map<String, Object> getUserInfo();
    
    /**
     * 用户登出
     */
    void logout(String username);
} 